Haptic trigger modification system

ABSTRACT

A system is provided that modifies a haptic effect experienced at a user input element. The system sends a haptic instruction and a haptic effect definition to a peripheral device. The system further receives user input data including a position of the user input element, or a force applied to the user input element. The system further modifies the haptic effect definition based on the received user input data. The system further sends a new haptic instruction and the modified haptic effect definition to the peripheral device. The system further causes a haptic output device to modify a haptic effect based on the modified haptic effect definition at the user input element of the peripheral device in response to the new haptic instruction.

PRIORITY APPLICATION

This application is a continuation of U.S. patent application Ser. No.14/538,955, filed on Nov. 12, 2014, the specification of which is herebyincorporated by reference in its entirety.

FIELD

One embodiment is directed generally to a device, and more particularly,to a device that produces haptic effects.

BACKGROUND

Video games and video game systems have become extremely popular. Videogame devices or controllers typically use visual and auditory cues toprovide feedback to a user. In some interface devices, kinestheticfeedback (such as active and resistive force feedback) and/or tactilefeedback (such as vibration, texture, and heat) is also provided to theuser, more generally known collectively as “haptic feedback” or “hapticeffects.” Haptic feedback can provide cues that enhance and simplify auser's interaction with a video game controller, or other electronicdevice. Specifically, vibration effects, or vibrotactile haptic effects,may be useful in providing cues to users of video game controllers orother electronic devices to alert the user to specific events, orprovide realistic feedback to create greater sensory immersion within asimulated or virtual environment.

Other devices, such as medical devices, automotive controls, remotecontrols, and other similar devices where a user interacts with a userinput element to cause an action, also benefit from haptic feedback orhaptic effects. For example, and not by way of limitation, user inputelements on medical devices may be operated by a user outside the bodyof a patient at a proximal portion of a medical device to cause anaction within the patient's body at a distal end of the medical device.Haptic feedback or haptic effects may be employed to alert the user tospecific events, or provide realistic feedback to the user regarding aninteraction of the medical device with the patient at the distal end ofthe medical device.

SUMMARY

One embodiment is a system that modifies a haptic effect experienced ata user input element. The system sends a haptic instruction and a hapticeffect definition to a peripheral device. The system further receivesuser input data including a position of the user input element, or aforce applied to the user input element. The system further modifies thehaptic effect definition based on the received user input data. Thesystem further sends a new haptic instruction and the modified hapticeffect definition to the peripheral device. The system further causes ahaptic output device to modify a haptic effect based on the modifiedhaptic effect definition at the user input element of the peripheraldevice in response to the new haptic instruction.

BRIEF DESCRIPTION OF THE DRAWINGS

Further embodiments, details, advantages, and modifications will becomeapparent from the following detailed description of the preferredembodiments, which is to be taken in conjunction with the accompanyingdrawings.

FIG. 1 illustrates a block diagram of a system in accordance with oneembodiment of the invention.

FIG. 2 illustrates a controller, according to an embodiment of theinvention.

FIG. 3 illustrates another view of the controller of FIG. 2, accordingto an embodiment of the invention.

FIG. 4 illustrates a block diagram of a controller in conjunction with ahost computer and display, according to an embodiment of the invention.

FIG. 5 illustrates a block diagram of a trigger haptic effect softwarestack for a system, according to an embodiment of the invention.

FIG. 6 illustrates an original trigger haptic effect definition that canproduce an original trigger haptic effect that can be experienced at atrigger of a controller, when the trigger is not pressed, according toan embodiment of the invention.

FIG. 7 illustrates a modified trigger haptic effect definition that canproduce a modified trigger haptic effect that can be experienced at atrigger of a controller, when the trigger is fully pressed, according toan embodiment of the invention.

FIG. 8 illustrates a flow diagram of the functionality of a haptictrigger modification module, according to an embodiment of theinvention.

FIG. 9 illustrates a flow diagram of the functionality of a haptictrigger modification module, according to another embodiment of theinvention.

DETAILED DESCRIPTION

One embodiment is a system that modifies haptic feedback that isexperienced at a peripheral device, such as a game controller orgamepad, based on user input data received from the peripheral device.For example, the system can modify a trigger haptic effect that isexperienced at a trigger of a controller, or some other peripheraldevice, based on trigger data received from the peripheral device.Examples of trigger data can include a position of a trigger, a closurerate of the trigger, or a force applied to the trigger. Examples ofmodifications of the trigger haptic effect can include programmaticallymodifying a magnitude (i.e., strength), frequency, attack, decay, orduration of the trigger haptic effect. By modifying a trigger hapticeffect, a system can compensate for a trigger position, trigger closurerate, or force applied to the trigger so that an “ideal” trigger hapticeffect is experienced at the trigger. As another example, the system canmodify a general haptic effect that is experienced at a user inputelement of the controller, gamepad, or other peripheral device, based onuser input data. The modified haptic feedback sensation can compensatefor a user's interaction with the user input element.

The system can first receive a haptic effect definition. The system canfurther receive trigger data, such as a position of a trigger, a closurerate of the trigger, or a force applied to the trigger. Examples of suchtrigger data can include placing the trigger in a specific position,sweeping the trigger through a specific position, or squeezing thetrigger. The system can programmatically modify the haptic effectdefinition based on the received trigger data, such as programmaticallymodifying a magnitude parameter, a frequency parameter, a directionalityparameter, an attack parameter, a decay parameter, and/or a durationparameter of the haptic effect definition. The system can then cause oneor more motors or actuators of the controller, gamepad, or otherperipheral device, to play, or otherwise output, haptic feedback basedon the modified haptic effect definition, thus causing modified hapticfeedback to be experienced. In other words, the system can cause thecontroller, gamepad, or other peripheral device, to playback a hapticeffect based on the modified haptic effect definition, where the hapticfeedback based on the modified haptic effect definition can be differentfrom the haptic feedback based on the original haptic effect definition.As understood by one of ordinary skill in the relevant art, “playback”is the act or instance of reproducing data (e.g., audio data, videodata, or haptic data). Thus, in one example, the system can modify anoverall trigger haptic effect to be experienced at a trigger of thecontroller based on a user's interaction with the trigger.

In one example embodiment, a weapon within a gaming application can havea reload effect that creates a trigger haptic effect of “buzzing” at atrigger of a controller, creating a haptic sensation as if there was anactuator within the trigger itself. A trigger haptic effect of thisnature may require that only a very small amount of force be applied tothe trigger. However, in the heat of gameplay combat, a user may causehis or her finger to continuously pull the trigger, thus negating thetrigger haptic effect. According to the embodiment, the system candetermine a position of the trigger (or a closure rate of the trigger,or a force applied to the trigger) and can modify the trigger hapticeffect so that the trigger haptic effect can still be experienced.

FIG. 1 illustrates a block diagram of a system 10 in accordance with oneembodiment of the invention. In one embodiment, system 10 is part of adevice (e.g., a personal computer or console, such as a video gameconsole), and system 10 provides a trigger haptic effect modificationfunctionality for the device. In another embodiment, system 10 isseparate from the device (e.g., personal computer or console), andremotely provides the aforementioned functionality for the device.Although shown as a single system, the functionality of system 10 can beimplemented as a distributed system. System 10 includes a bus 12 orother communication mechanism for communicating information, and aprocessor 22 operably coupled to bus 12 for processing information.Processor 22 may be any type of general or specific purpose processor.System 10 further includes a memory 14 for storing information andinstructions to be executed by processor 22. Memory 14 can be comprisedof any combination of random access memory (“RAM”), read only memory(“ROM”), static storage such as a magnetic or optical disk, or any othertype of computer-readable medium.

A computer-readable medium may be any available medium that can beaccessed by processor 22 and may include both a volatile and nonvolatilemedium, a removable and non-removable medium, a communication medium,and a storage medium. A communication medium may include computerreadable instructions, data structures, program modules or other data ina modulated data signal such as a carrier wave or other transportmechanism, and may include any other form of an information deliverymedium known in the art. A storage medium may include RAM, flash memory,ROM, erasable programmable read-only memory (“EPROM”), electricallyerasable programmable read-only memory (“EEPROM”), registers, hard disk,a removable disk, a compact disk read-only memory (“CD-ROM”), or anyother form of a storage medium known in the art.

In one embodiment, memory 14 stores software modules that providefunctionality when executed by processor 22. The modules include anoperating system 15 that provides operating system functionality forsystem 10, as well as the rest of an overall device in one embodiment.The modules further include a haptic trigger modification module 16 thatmodifies a haptic effect experienced at a trigger. In certainembodiments, haptic trigger modification module 16 can comprise aplurality of modules, where each module provides specific individualfunctionality for modifying a haptic effect experienced at a trigger.System 10 will typically include one or more additional applicationmodules 18 to include additional functionality, such as peripheralfirmware which can provide control functionality for a peripheraldevice, such as a controller 30.

System 10, in embodiments that transmit and/or receive data from remotesources, further includes a communication device 20, such as a networkinterface card, to provide mobile wireless network communication, suchas infrared, radio, Wi-Fi, or cellular network communication. In otherembodiments, communication device 20 provides a wired networkconnection, such as an Ethernet connection or a modem.

System 10 is operably connected to controller 30. Controller 30 is aperipheral device used to provide input to system 10. Controller 30 canbe operably connected to system 10 using either a wireless connection ora wired connection. Controller 30 can further include a local processorwhich can communicate with system 10 using either a wireless connectionor a wired connection. Alternatively, controller 30 may be configured tonot include a local processor, and all input signals and/or outputsignals associated with controller 30 can be handled and processeddirectly by processor 22 of system 10.

Controller 30 can further include one or more digital buttons, one ormore analog buttons, one or more bumpers, one or more directional pads,one or more analog or digital sticks, one or more driving wheels, and/orone or more user input elements that can be interacted with by a user,and that can provide input to system 10. Controller 30 can also includeone or more analog or digital trigger buttons (or “triggers”) that canfurther be interacted with by the user, and that can further provideinput to system 10. As is described below in greater detail, controller30 can further include a motor, or another type of actuator or hapticoutput device, configured to exert a bi-directional push/pull force onat least one trigger of controller 30.

Controller 30 can also include one or more actuators, or other types ofhaptic output devices. The local processor of controller 30, or,processor 22 in embodiments where controller 30 does not include a localprocessor, may transmit a haptic signal associated with a haptic effectto at least one actuator of controller 30. The actuator, in turn,outputs haptic effects such as vibrotactile haptic effects, kinesthetichaptic effects, or deformation haptic effects, in response to the hapticsignal. The haptic effects can be experienced at a user input element(e.g., a digital button, analog button, bumper, directional pad, analogor digital stick, driving wheel, slider, or trigger) of controller 30.Alternatively, the haptic effects can be experienced at an outer surfaceof controller 30. The actuator includes an actuator drive circuit. Theactuator may be, for example, an electric motor, an electro-magneticactuator, a voice coil, a shape memory alloy, an electro-active polymer,a solenoid, an eccentric rotating mass motor (“ERM”), a linear resonantactuator (“LRA”), a piezoelectric actuator, a high bandwidth actuator,an electroactive polymer (“EAP”) actuator, an electrostatic frictiondisplay, or an ultrasonic vibration generator. An actuator is an exampleof a haptic output device, where a haptic output device is a deviceconfigured to output haptic effects, such as vibrotactile hapticeffects, electrostatic friction haptic effects, or deformation hapticeffects, in response to a drive signal. In alternate embodiments, theone or more actuators within controller 30 can be replaced by some othertype of haptic output device.

Controller 30 can further include one or more speakers. The localprocessor of controller 30, or, processor 22 in embodiments wherecontroller 30 does not include a local processor, may transmit an audiosignal to at least one speaker of controller 30, which in turn outputsaudio effects. The speaker may be, for example, a dynamic loudspeaker,an electrodynamic loudspeaker, a piezoelectric loudspeaker, amagnetostrictive loudspeaker, an electrostatic loudspeaker, a ribbon andplanar magnetic loudspeaker, a bending wave loudspeaker, a flat panelloudspeaker, a heil air motion transducer, a plasma arc speaker, and adigital loudspeaker.

Controller 30 can further include one or more sensors. A sensor can beconfigured to detect a form of energy, or other physical property, suchas, but not limited to, sound, movement, acceleration, bio signals,distance, flow, force/pressure/strain/bend, humidity, linear position,orientation/inclination, radio frequency, rotary position, rotaryvelocity, manipulation of a switch, temperature, vibration, or visiblelight intensity. The sensor can further be configured to convert thedetected energy, or other physical property, into an electrical signal,or any signal that represents virtual sensor information, and controller30 can send the converted signal to the local processor of controller30, or, processor 22 in embodiments where controller 30 does not includea local processor. The sensor can be any device, such as, but notlimited to, an accelerometer, an electrocardiogram, anelectroencephalogram, an electromyograph, an electrooculogram, anelectropalatograph, a galvanic skin response sensor, a capacitivesensor, a hall effect sensor, an infrared sensor, an ultrasonic sensor,a pressure sensor, a fiber optic sensor, a flexion sensor (or bendsensor), a force-sensitive resistor, a load cell, a LuSense CPS² 155, aminiature pressure transducer, a piezo sensor, a strain gage, ahygrometer, a linear position touch sensor, a linear potentiometer (orslider), a linear variable differential transformer, a compass, aninclinometer, a magnetic tag (or radio frequency identification tag), arotary encoder, a rotary potentiometer, a gyroscope, an on-off switch, atemperature sensor (such as a thermometer, thermocouple, resistancetemperature detector, thermistor, or temperature-transducing integratedcircuit), microphone, photometer, altimeter, bio monitor, camera, or alight-dependent resistor.

FIG. 2 illustrates a controller 100, according to an embodiment of theinvention. In one embodiment, controller 100 is identical to controller30 of FIG. 1. Further, FIG. 3 illustrates another view of controller100. Controller 100 may be generally used with a gaming system that maybe connected to a computer, mobile phone, television, or other similardevice. Components of controller 100 illustrated in FIGS. 2 and 3 (i.e.,housing 102, analog or digital stick 110, button 114, trigger 118, andrumble actuators 122 and 124) are further described below in greaterdetail in conjunction with FIG. 4.

FIG. 4 illustrates a block diagram of controller 100 used in a gamingsystem 101 that further includes a host computer 104 and a display 106.As shown in the block diagram of FIG. 4, controller 100 includes a localprocessor 108 which communicates with host computer 104 via a connection105. Connection 105 may be a wired connection, a wireless connection, orother types of connections known to those skilled in the art. Controller100 may be alternatively configured to not include local processor 108,whereby all input/output signals from controller 100 are handled andprocessed directly by host computer 104. Host computer 104 is operablycoupled to display screen 106. In an embodiment, host computer 104 is agaming device console and display screen 106 is a monitor which isoperably coupled to the gaming device console, as known in the art. Inanother embodiment, as known to those skilled in the art, host computer104 and display screen 106 may be combined into a single device.

A housing 102 of controller 100 is shaped to easily accommodate twohands gripping the device, either by a left-handed user or aright-handed user. Those skilled in the art would recognize thatcontroller 100 is merely an example embodiment of a controller ofsimilar shape and size to many “gamepads” currently available for videogame console systems, such as a Microsoft® Xbox One™ controller or aPlayStation® DualShock™ controller, and that controllers with otherconfigurations of user input elements, shapes, and sizes may be used,including but not limited to controllers such as a Wii™ remote or Wii™ UController, Sony® SixAxis™ controller or Sony® Wand controller, as wellas controllers shaped as real life objects (such as tennis rackets, golfclubs, baseball bats, and the like) and other shapes, or controllerswith a display or head-mounted display.

Controller 100 includes several user input elements, including an analogor digital stick 110, a button 114, and a trigger 118. As used herein,user input element refers to an interface device such as a trigger,button, analog or digital stick, or the like, which is manipulated bythe user to interact with host computer 104. As can be seen in FIGS. 2and 3, and as known to those skilled in the art, more than one of eachuser input element and additional user input elements may be included oncontroller 100. Accordingly, the present description of a trigger 118,for example, does not limit controller 100 to a single trigger. Further,the block diagram of FIG. 4 shows only one (1) of each of analog ordigital stick 110, button 114, and trigger 118. However, those skilledin the art would understand that multiple analog or digital sticks,buttons, and triggers, as well as other user input elements, may beused, as described above.

As can be seen in the block diagram of FIG. 4, controller 100 includes atargeted actuator or motor to directly drive each of the user inputelements thereof as well as one or more general or rumble actuators 122,124 operably coupled to housing 102 in a location where a hand of theuser is generally located. More particularly, analog or digital stick110 includes a targeted actuator or motor 112 operably coupled thereto,button 114 includes a targeted actuator or motor 116 operably coupledthereto, and trigger 118 includes a targeted actuator or motor 120operably coupled thereto. In addition to a plurality of targetedactuators, controller 100 includes a position sensor operably coupled toeach of the user input elements thereof. More particularly, analog ordigital stick 110 includes a position sensor 111 operably coupledthereto, button 114 includes a position sensor 115 operably coupledthereto, and trigger 118 includes a position sensor 119 operably coupledthereto. Local processor 108 is operably coupled to targeted actuators112, 116, 120 as well as position sensors 111, 115, 119 of analog ordigital stick 110, button 114, and trigger 118, respectively. Inresponse to signals received from position sensors 111, 115, 119, localprocessor 108 instructs targeted actuators 112, 116, 120 to providedirected or targeted kinesthetic effects directly to analog or digitalstick 110, button 114, and trigger 118, respectively. Such targetedkinesthetic effects are discernible or distinguishable from general orrumble haptic effects produced by general actuators 122, 124 along theentire body of the controller. The collective haptic effects provide theuser with a greater sense of immersion to the game as multiplemodalities are being simultaneously engaged, e.g., video, audio, andhaptics. Further details of a controller configured to produce hapticsis described in greater detail in application Ser. No. 14/258,644, filedApr. 22, 2014, entitled “GAMING DEVICE HAVING A HAPTIC-ENABLED TRIGGER,”herein incorporated by reference in its entirety.

FIG. 5 illustrates a block diagram of a trigger haptic effect softwarestack for a system, according to an embodiment of the invention. Thetrigger haptic effect software stack is implemented on a system, such assystem 10 of FIG. 1. In the illustrated embodiment, the system includesthe following components: device 500, peripheral firmware 510, andcontroller 520. Device 500 can be any type of computer device, such as apersonal computer, tablet, smartphone, or console (e.g., video gameconsole). Peripheral firmware 510 is firmware for one or more peripheraldevices (e.g., controllers) that can be operably connected to device500. Controller 520 is an example of a peripheral that is operablyconnected to device 500. Controller 520 can be a video game controller.In one embodiment, controller 520 can be identical to controller 30 ofFIG. 1, and controller 100 of FIGS. 2, 3, and 4.

Device 500 includes game input management code 501. Game inputmanagement code 501 includes a set of computer-readable instructionsthat manage input provided by controller 520 in the context of a gameapplication, or other type of application, executed within device 500.Device 500 further includes peripheral input application programminginterface (“API”) 502. Peripheral input API 502 includes a set ofcomputer-readable functions or routines that allow game input managementcode 501 to interact with peripheral firmware 510 in order to receiveand manage input provided by controller 520. Device 500 further includesrumble API 503. Rumble API includes a set of computer-readable functionsor routines that allow game input management code 501 to interact withperipheral firmware 510 in order to transmit rumble instructions to oneor more rumble motors, or rumble actuators, of controller 520 (e.g.,rumble motors L and R, as illustrated in FIG. 5). A rumble instructioncan cause a rumble motor, or rumble actuator, of controller 520 toproduce a general or rumble haptic effect.

Device 500 further includes trigger haptic effect API 504 (identified inFIG. 5 as “API”). Trigger haptic effect API 504 includes a set ofcomputer-readable functions or routines that are exposed to game inputmanagement code 501, and that allow game input management code 501 tointeract with peripheral firmware 510 in order to transmit hapticinstructions to controller 520, such as trigger instructions to one ormore triggers of controllers 520 (e.g., triggers L and R, as illustratedin FIG. 5). A haptic instruction can cause one or more targeted motors,or targeted actuators, of controller 520 to produce a haptic effect atone or more user input elements of controllers 520. A triggerinstruction is a specific type of haptic instruction that can cause oneor more targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) to produce a trigger hapticeffect at one or more triggers of controllers 520 (e.g., triggers L andR, as illustrated in FIG. 5). A trigger haptic effect is a specific typeof haptic effect that is experienced at a trigger of a controller, suchas controller 520. Trigger haptic effect API 504 can store one or moretrigger haptic effect definitions. A haptic effect definition is a datastructure that includes haptic data, such as a haptic signal, that ispre-defined and that can be stored within a storage, such as a hapticfile or haptic stream, and that can be sent to one or more rumblemotors, rumble actuators, targeted motors, or targeted actuators, toproduce a haptic effect at a component, or user input element, ofcontroller 520. The haptic data can include one or more attributes ofthe corresponding haptic effect, where the attributes can be stored asparameters. Example parameters of a haptic effect definition include anamplitude parameter, a frequency parameter, a waveform parameter, anenvelope parameter, a magnitude (or strength) parameter, and a durationparameter. A trigger haptic effect definition is a specific type ofhaptic effect definition that can be sent to one or more motors, oractuators, of controller 520 (e.g., motors L and R, as illustrated inFIG. 5) to produce a trigger haptic effect at one or more triggers ofcontrollers 520 (e.g., triggers L and R, as illustrated in FIG. 5).

According to the embodiment, trigger haptic effect API 504 can allowgame input management code 501 to interact with directplayback/crossover 505, trigger engine 506, and spatialization engine507, and can further manage direct playback/crossover 505, triggerengine 506, and spatialization engine 507 according to requests invokedby game input management code 501. Further, trigger haptic effect API504 can store data required for communication with peripheral firmware510, and required for generation of one or more trigger haptic effects.In an alternate embodiment, trigger haptic effect API 504 can residewithin peripheral firmware 510 rather than device 500.

Device 500 further includes direct playback/crossover 505. Directplayback/crossover 505 receives haptic data as input, produces hapticdata as output, and transmits haptic data to one or more targetedmotors, or targeted actuators, of controller 520 (e.g., motors L and R,as illustrated in FIG. 5). In certain embodiments, directplayback/crossover 505 can output the input haptic data directly,without modifying a format of the input haptic data. This results in an“as-is” playback of the input haptic data. In other embodiments, directplayback/crossover 505 can convert the haptic data that is input from afirst format to a second format, and can further output the convertedhaptic data. Depending on the type of playback, directplayback/crossover 505 can optionally use a programmable crossover toconvert the haptic data. By converting the haptic data, device 500 can“deconstruct” the haptic effect and playback the haptic effect atmultiple actuators faithfully. In one embodiment, the format of thehaptic data can be a Haptic Elementary Stream (“HES”) format. A HESformat is a file or data format for representing haptic data that can bestreamed to a device. The haptic data can be represented in a mannerthat is identical or similar to how uncompressed sound is represented,although the haptic data can be encrypted within the HES format. In analternate embodiment, direct playback/crossover 505 can reside withinperipheral firmware 510 rather than device 500.

Device 500 further includes trigger engine 506. Trigger engine 506 canreceive haptic data, such as a trigger haptic effect definition, and canmodify the haptic data based on data, such as trigger data (e.g.,trigger data 513 as illustrated in FIG. 5) received from controller 520.Trigger data is data that includes one or more parameters that indicatea position and/or range of one or more triggers of controller 520 (e.g.,triggers L and R as illustrated in FIG. 5). Trigger engine 506 canfurther transmit haptic instructions to controller 520. For example,trigger engine 506 can transmit trigger instructions to one or moretriggers of controller 520 (e.g., triggers L and R, as illustrated inFIG. 5). As previously described, a trigger instruction can cause one ormore targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) to produce a trigger hapticeffect at one or more triggers of controllers 520 (e.g., triggers L andR, as illustrated in FIG. 5). Thus, in one embodiment, by modifying thehaptic data of the trigger haptic effect definition, trigger engine 506can cause a specific trigger haptic effect to be experienced at atrigger based on a position and/or range of the trigger. In anotherembodiment, by modifying the haptic data of the trigger haptic effectdefinition, trigger engine 506 can scale a trigger haptic effect for oneor more targeted motors, or targeted actuators, of controller 520 (e.g.,motors L and R, as illustrated in FIG. 5) based on a position and/orrange of the trigger. Trigger engine 506 can further store one or morehaptic effect definitions, such as trigger haptic effect definitions. Inan alternate embodiment, trigger engine 506 can reside within peripheralfirmware 510 rather than device 500.

Device 500 further includes spatialization engine 507 (identified inFIG. 5 as “spatialisation engine”). Spatialization engine 507 canreceive haptic data, such as a trigger haptic effect definition, and canmodify the haptic data based on spatialization data. Spatialization datacan include data that indicates a desired direction and/or flow of ahaptic effect, such as a trigger haptic effect. In certain embodiments,spatialization engine 507 can receive spatialization data that includesa direction and/or flow from game input management code 501. Further,spatialization data can also include one or more positions of one ormore hands of a user located on controller 520. In certain embodiments,spatialization engine 507 can receive spatialization data that includesone or more hand positions from controller 520. Further, in certainembodiments, spatialization engine 507 can receive spatialization datathat includes a position of a user's character within a game applicationas communicated by game input management code 501.

According to the embodiment, spatialization engine 507 can modify thehaptic data so that a haptic effect, such as a trigger haptic effect, isscaled for one or more rumble motors, or rumble actuators, of controller520 (e.g., rumble motors L and R, as illustrated in FIG. 5), and thatthe haptic effect is also scaled for one or more targeted motors, ortargeted actuators, of controller 520 (e.g., motors L and R, asillustrated in FIG. 5). In other words, spatialization engine 507 canmodify the haptic data that is sent to each motor or actuator, and thus,modify the haptic effect that is experienced at each motor or actuator,in order to convey a sense of direction and flow of an overall hapticeffect. For example, in order to emphasize a haptic effect experiencedat a motor or actuator, spatialization engine 507 may scale one or moreportions of the haptic effect. For example, spatialization engine 507may scale haptic data that is sent to the motor or actuator that causesthe haptic effect to be experienced, causing the haptic effect to bemore pronounced (e.g., increased magnitude, duration, etc.).Additionally, spatialization engine 507 may scale haptic data that issent to other motors or actuators, causing other haptic effects that areexperienced at those motors or actuators to be less pronounced (e.g.,decreased magnitude, duration, etc.). In certain embodiments,spatialization engine 507 can modify the haptic data in real-time.Further, in certain embodiments, spatialization engine 507 can havenon-linear relationships between inputs and motor, or actuator, outputsin order to exaggerate an overall trigger haptic effect. In an alternateembodiment, spatialization engine 507 can reside within peripheralfirmware 510 rather than device 500.

Device 500 further includes encoder 508. Encoder 508 encodes haptic datareceived from direct playback/crossover 505, trigger engine 506, and/orspatialization engine 507 into a format. In one embodiment, the formatcan be an HES format. Encoder 508 further transmits the encoded hapticdata to peripheral firmware 510.

Peripheral firmware 510 includes decoder and crossover 511. Decoder andcrossover 511 receives the encoded haptic data from encoder 508 anddecodes the encoded haptic data. In certain embodiments, decoder andcrossover 511 computes a programmable crossover in order to decode theencoded haptic data. In some of these embodiments, decoder and crossover511 computes the programmable crossover in real-time. Peripheralfirmware 510 further includes trigger control 512. Trigger control 512is a low-level control API for one or more targeted motors, or targetedactuators, of controller 520 (e.g., motors L and R, as illustrated inFIG. 5). Trigger control 512 can receive a trigger instruction fromdevice 500, can convert the trigger instruction into a low-level triggerinstruction for a specified targeted motor, or targeted actuator, ofcontroller 520, and can transmit the low-level trigger instruction tothe specified targeted motor, or targeted actuator, of controller 520.The low-level trigger instruction can cause the specified targetedmotor, or targeted actuator, to produce a trigger haptic effect at aspecified trigger of controller 520.

Peripheral firmware 510 further includes trigger data 513. Trigger data513, as previously described, is data that includes one or moreparameters, such as one or more parameters that indicate a positionand/or range of one or more triggers of controller 520 (e.g., triggers Land R as illustrated in FIG. 5). Trigger data 513 can be received fromcontroller 520 by peripheral firmware 510. Peripheral firmware 510 canfurther store trigger data 513, and can further transmit trigger data513 to device 500. Peripheral firmware 510 further includes othergamepad functions 514, which are functions of controller 520 that can bemanaged by peripheral firmware 510. Such functions can include suchfunctions as wired/wireless communications, input reporting, protocolimplementation, power management, etc. Peripheral firmware 510 furtherincludes rumble control 515. Rumble control 515 is a low-level controlAPI for one or more rumble motors, or rumble actuators, of controller520 (e.g., rumble motors L and R, as illustrated in FIG. 5). Rumblecontrol 515 can receive a rumble instruction from device 500, canconvert the rumble instruction into a low-level rumble instruction for aspecified rumble motor, or rumble actuator, of controller 520, and cantransmit the low-level trigger instruction to the specified rumblemotor, or rumble actuator, of controller 520.

Controller 520 includes triggers L and R. Controller 520 furtherincludes gear boxes L and R and motors L and R. Motor L and gearbox Lare operably coupled to trigger L within controller 520. Likewise, motorR and gearbox R are operably coupled to trigger R within controller 520.When motor L receives a trigger instruction, motor L and gearbox Lcollectively cause a trigger haptic effect to be experienced at triggerL. Likewise, when motor R receives a trigger instruction, motor R andgearbox R collectively cause a trigger haptic effect to be experiencedat trigger R. According to the embodiment, peripheral firmware 510 sendstrigger instructions to motors L and R of controller 520 using driveelectronics 530. Controller 520 further includes potentiometers L and R.Potentiometer L can detect a position and/or range of trigger L, and canfurther send the detected position and/or range of trigger L toperipheral firmware 510 as trigger data. Likewise, potentiometer R candetect a position and/or range of trigger R, and can further send thedetected position and/or range of trigger R to peripheral firmware 510as trigger data. In one embodiment, potentiometers L and R can each bereplaced with another type of sensor, such as a hall effect sensor.Controller 520 further includes rumble motors L and R. When rumble motorL receives a rumble instruction, rumble motor L causes a haptic effectto be experienced along a left body of controller 520. Likewise, whenrumble motor R receives a rumble instruction, rumble motor R cause ahaptic effect to be experienced along a right body of controller 520.According to the embodiment, peripheral firmware 510 sends rumbleinstructions to rumble motors L and R of controller 520 using rumbledrive electronics 530.

In an alternate embodiment, one or more targeted motors, or targetedactuators, can be operably coupled to one or more user input elements(such as one or more digital buttons, one or more analog buttons, one ormore bumpers, one or more directional pads, one or more analog ordigital sticks, one or more driving wheels, one or more sliders) ofcontroller 520. According to the alternate embodiment, peripheralfirmware 510 can sends instructions to the one or more targeted motorsor targeted actuators, causing the one or more targeted motors ortargeted actuators to produce haptic effects that are experienced at theone or more user input elements of controller 520.

In one embodiment, as previously described, a system (such as system 10of FIG. 1) can receive user input data for a user input element of aperipheral device, such as a controller or gamepad, while a hapticeffect is being played at the user input element of the peripheraldevice, or otherwise being played at the peripheral device, where thehaptic effect is based on an original haptic effect definition. As aspecific example, the system can receive trigger data for a trigger of acontroller, while a trigger haptic effect is being played at the triggerof the peripheral device. The system can determine that the hapticeffect will not be experienced as originally intended when the hapticeffect definition was authored based on the received user input data.For example, a vibrotactile haptic effect with a light frequency (e.g.,200 hertz (“Hz”)) will normally produce a small vibration on a triggerwhen applied to the trigger. However, if a user pulls the trigger allthe way in, and/or if the user is gripping the trigger tightly, thevibrotactile haptic effect will most likely not be felt by the user,unless the vibrotactile haptic effect is modified to increase themagnitude and the frequency. As another example, a kinesthetic hapticeffect that produces a push force against a user's finger on a triggerwill likely not be felt by the user if the user is pulling the trigger,unless the kinesthetic haptic effect is modified to increase themagnitude (i.e., strength) or the frequency.

The system can further programmatically modify the haptic effectdefinition so that a modified haptic effect is similar or identical toan original haptic effect as originally intended, even in light of thereceived user input data. In other words, the system canprogrammatically modify the haptic effect definition to compensate forthe diminishment of the original haptic effect caused by a userinteraction with the user input element that is represented by thereceived user input data. By programmatically modifying the hapticeffect definition, the system can programmatically modify one or moreparameters of the haptic data included within the haptic effectdefinition. Such parameters can include: a magnitude (or strength)parameter; a frequency parameter; a directionality parameter; an attackparameter; a decay parameter; or a duration parameter. Alternatively, byprogrammatically modifying the haptic effect definition, the system cangenerate a separate haptic effect definition and send the separatehaptic effect definition to a separate motor or actuator in order togenerate a separate haptic effect, in concurrence with a generation ofthe original haptic effect, where the separate haptic effect complementsthe original haptic effect. The programmatic modification of the hapticeffect definition can be accomplished according to a modificationalgorithm of the system. The system can further send a hapticinstruction and the modified haptic effect definition to an actuator ormotor within the peripheral device. The actuator or motor can furtheroutput a modified haptic effect based on the modified haptic effectdefinition.

In one embodiment, the haptic instruction can be a trigger instructionand the modified haptic effect definition can be a modified triggerhaptic effect definition. Further, the trigger instruction and themodified trigger haptic effect definition can be sent to a targetedactuator or motor operably coupled to a trigger. As an example, atrigger haptic effect definition can define a bi-directional push/pullforce with a specified magnitude (or strength) that is applied to thetrigger by a targeted actuator or motor that is operably coupled to thetrigger. Further, a potentiometer, hall sensor, or other type of sensorcan determine whether a user is pulling or pushing the trigger. Thesystem can programmatically determine, when a user is pulling thetrigger, how much of a push force a targeted actuator or motor that isoperably coupled to the trigger is required to apply to the trigger tocompensate for the pulling of the trigger by the user. The system canprogrammatically modify a trigger haptic effect definition so that thetargeted actuator or motor applies a sufficient push force to compensatefor the pulling of the trigger by the user. The system canprogrammatically modify the trigger haptic effect definition bymodifying at least one of the following parameters of the trigger hapticeffect definition: a magnitude (i.e., strength) parameter; a frequencyparameter; a duration parameter; a directionality parameter; an attackparameter; or a decay parameter. In an alternate embodiment, the systemcan generate a haptic effect definition that defines a haptic effect sothat one or more general actuators or motors that are within theperipheral device, but not operably coupled to the trigger, can generatethe defined haptic effect that complements the bi-directional push/pullforce applied by the targeted actuator or motor that is operably coupledto the trigger. In yet another alternate embodiment, the haptic effectgenerated by the one or more general actuators or motors can replace thebi-directional push/pull force applied by the targeted actuator or motorthat is operably coupled to the trigger.

As previously described, a user input element can be, for example, adigital button, an analog button, a bumper, a directional pad, an analogor digital stick, a driving wheel, a slider, or a trigger. Further, userinput data can be, for example, a position of the user input element, aclosure rate of the user input element, or a force applied to the userinput element. In one embodiment, user input data can further includedata that is derived from a position of the user input element, aclosure rate of the user input element, or a force applied to the userinput element. When the user input element is a trigger, the user inputdata can be trigger data, where trigger data can be, for example, aposition of the trigger, a closure rate of the trigger, or a forceapplied to the trigger. User input data, such as trigger data, can begenerated by a potentiometer, hall sensor, or other type of sensor thatis operably coupled to a user input element, such as a trigger.

In one embodiment, the peripheral device can detect motion, such asmotion of a user input element, where the motion is multi-axis motion(i.e., motion across two or more axes of a peripheral device). In thisembodiment, motion data can be generated and sent to the system, wherethe system can receive the motion data. The system can furtherprogrammatically modify the haptic effect definition in light of thereceived motion data. For example, the system can modify the hapticeffect definition to pause a haptic effect during the multi-axis motion.As another example, the system can modify the haptic effect definitionto reduce a frequency of a haptic effect when an upward motion moves toa downward motion.

FIG. 6 illustrates an original trigger haptic effect definition 600 thatcan produce an original trigger haptic effect that can be experienced ata trigger 610 of a controller, when trigger 610 is not pressed,according to an embodiment of the invention. According to theembodiment, original trigger haptic effect definition 600 includes awaveform that is generated by one or more parameters. In an embodiment,the one or more parameters can include: a magnitude (strength)parameter; a frequency parameter; a duration parameter; a directionalityparameter; an attack parameter; and a decay parameter. A system canreceive trigger data that includes a position of trigger 610, where theposition of trigger 610 indicates that trigger 610 is not being pressed.The system can determine that no modification to original trigger hapticeffect definition 600 is necessary. The system can further send originaltrigger haptic effect definition 600 to the controller, where a targetedmotor or actuator can apply a force to trigger 610 based on originaltrigger haptic effect definition 600 to produce a trigger haptic effectat trigger 610.

FIG. 7 illustrates a modified trigger haptic effect definition 700 thatcan produce a modified trigger haptic effect that can be experienced ata trigger 710 of a controller, when the trigger is fully pressed,according to an embodiment of the invention. According to theembodiment, modified trigger haptic effect definition 700 includes awaveform that is generated by one or more parameters. In an embodiment,the one or more parameters can include: a magnitude (strength)parameter; a frequency parameter; a duration parameter; a directionalityparameter; an attack parameter; and a decay parameter. As illustrated inFIG. 7, the waveform of modified trigger haptic effect definition 700 issignificantly different from the waveform of original trigger hapticeffect definition 600. More specifically, the differences in thewaveform of modified trigger haptic effect definition 700 and originaltrigger haptic effect definition 600 include changes in magnitude andfrequency. The waveform of original trigger haptic effect definition 600is approximately a 100 Hz haptic effect waveform that changes to ashorter haptic effect waveform for modified trigger haptic effectdefinition 700 with a lower frequency and more significant decay. Asystem can receive trigger data that includes a position of trigger 710,where the position of trigger 710 indicates that trigger 710 is beingfully pressed. The system can determine that original trigger hapticeffect definition 600 will not produce an “ideal” trigger haptic effectat trigger 710 in light of trigger 710 being fully pressed. Morespecifically, significant attributes of a trigger haptic effect producedby original trigger haptic effect definition 600 can be lost when asignificant amount of force is applied at trigger 710. The system canfurther modify original trigger haptic effect definition 600 byconverting original trigger haptic effect definition 600 to modifiedhaptic effect definition 700. The system can programmatically performthis modification by programmatically modifying one or more parametersof original trigger haptic effect definition 600. The system can furthersend modified trigger haptic effect definition 700 to the controller,where a targeted motor or actuator can apply a force to trigger 710based on modified trigger haptic effect definition 700 to produce amodified trigger haptic effect at trigger 710. The modified triggerhaptic effect can produce a “more ideal” haptic effect experience inlight of the significant amount of force being applied at trigger 710.

FIG. 8 illustrates a flow diagram of the functionality of a haptictrigger modification module (such as haptic trigger modification module16 of FIG. 1), according to an embodiment of the invention. In oneembodiment, the functionality of FIG. 8, as well as the functionality ofFIG. 9, described below, are implemented by software stored in memory orother computer-readable or tangible media, and executed by a processor.In other embodiments, each functionality may be performed by hardware(e.g., through the use of an application specific integrated circuit(“ASIC”), a programmable gate array (“PGA”), a field programmable gatearray (“FPGA”), etc.), or any combination of hardware and software. Incertain embodiments, some of the functionality can be omitted.

The flow begins and proceeds to 810. At 810, an original hapticinstruction and a haptic effect definition are sent to a peripheraldevice. The original haptic instruction can cause a haptic output deviceto generate a haptic effect based on the haptic effect definition at auser input element of a peripheral device, or within the peripheraldevice. The haptic effect definition can include haptic data. In certainembodiments, the haptic data can include one or more parameters. Theparameters can include at least one of: a magnitude parameter; afrequency parameter; a duration parameter; a directionality parameter;an attack parameter; or a decay parameter. In certain embodiments, theoriginal haptic instruction can be an original trigger instruction, andthe haptic effect definition can be a trigger haptic effect definition.In these embodiments, the original trigger instruction can cause atargeted output device to generate a trigger haptic effect based on thetrigger haptic effect definition at a trigger of the peripheral device.In certain embodiments, the peripheral device can be a controller or agamepad. In certain embodiments, 810 can be omitted. The flow proceedsto 820.

At 820, user input data is received from the peripheral device. The userdata can include at least one of: a position of the user input elementof the peripheral device; or a force applied to the user input elementof the peripheral device. In embodiments where the user input element isa trigger, the user input data can be trigger data. The trigger data caninclude at least one of: a position of the trigger; a closure rate ofthe trigger; or a force applied to the trigger. The flow then proceedsto 830.

At 830, the haptic effect definition is modified based on the receiveduser input data. In embodiments where the received user input data istrigger data, the haptic effect definition is modified based on thereceived trigger data. In certain embodiments, the haptic effectdefinition can be modified by modifying the haptic data of the hapticeffect definition. In some of these embodiments, the haptic effectdefinition can be modified by modifying one or more parameters of thehaptic data. Modifying the one or more parameters of the haptic data caninclude modifying at least one of: a magnitude parameter; a frequencyparameter; a directionality parameter; an attack parameter; a decayparameter; or a duration parameter. In other embodiments, the hapticeffect definition can be modified by: creating a new haptic effectdefinition; sending a haptic instruction and the new haptic effectdefinition to the peripheral device; and causing a general haptic outputdevice to generate a haptic effect based on the new haptic effectdefinition at the peripheral device in response to the hapticinstruction. In some embodiments, the haptic effect definition can bemodified programmatically. The flow then proceeds to 840.

At 840, a new haptic instruction and the modified haptic effectdefinition are sent to the peripheral device. In certain embodiments,the new haptic instruction can be a new trigger instruction. The flowthen proceeds to 850.

At 850, the new haptic instruction causes a haptic output device tomodify a haptic effect based on the modified haptic effect definition atthe user input element of the peripheral device. In certain embodiments,the haptic output device can modify the haptic effect by generating amodified haptic effect based on the modified haptic effect definition,where the modified haptic effect replaces an original haptic effect. Inother embodiments, the haptic output device can modify the haptic effectby generating a new haptic effect based on the modified haptic effectdefinition, where the new haptic effect can be generated concurrentlywith an original haptic effect. In certain embodiments, the hapticoutput device can be a targeted haptic output device, and the targetedhaptic output device can modify the haptic effect at the trigger of theperipheral device. In certain embodiments, the targeted haptic outputdevice can be a targeted actuator. In some of those embodiments, thetargeted actuator can be a targeted motor. The flow then ends.

FIG. 9 illustrates a flow diagram of the functionality of a haptictrigger modification module, according to another embodiment of theinvention. The flow begins and proceeds to 910. At 910, an originalhaptic instruction and a haptic effect definition are sent to aperipheral device. The original haptic instruction can cause a hapticoutput device to generate a haptic effect based on the haptic effectdefinition at a user input element of a peripheral device, or within theperipheral device. The haptic effect definition can include haptic data.In certain embodiments, the haptic data can include one or moreparameters. The parameters can include at least one of: a magnitudeparameter; a frequency parameter; a duration parameter; a directionalityparameter; an attack parameter; or a decay parameter. In certainembodiments, the original haptic instruction can be an original triggerinstruction, and the haptic effect definition can be a trigger hapticeffect definition. In these embodiments, the original triggerinstruction can cause a targeted output device to generate a triggerhaptic effect based on the trigger haptic effect definition at a triggerof the peripheral device. In certain embodiments, the peripheral devicecan be a controller or a gamepad. In certain embodiments, 910 can beomitted. The flow proceeds to 920.

At 920, motion data is received from the peripheral device. The motiondata can include at least one of: a motion of the user input elementfrom a first axis of the peripheral device to a second axis of theperipheral device, or a motion of the user input element from a firstdirection within the peripheral device to a second direction within theperipheral device. The flow proceeds to 930.

At 930, user input data is received from the peripheral device. The userdata can include at least one of: a position of the user input elementof the peripheral device; or a force applied to the user input elementof the peripheral device. In embodiments where the user input element isa trigger, the user input data can be trigger data. The trigger data caninclude at least one of: a position of the trigger; a closure rate ofthe trigger; or a force applied to the trigger. The flow then proceedsto 940.

At 940, the haptic effect definition is modified based on the receivedmotion data. In certain embodiments, the haptic effect definition can bemodified by modifying the haptic data of the haptic effect definition.In some of these embodiments, the haptic effect definition can bemodified by modifying one or more parameters of the haptic data.Modifying the one or more parameters of the haptic data can includemodifying at least one of: a magnitude parameter; a frequency parameter;a directionality parameter; an attack parameter; a decay parameter; or aduration parameter. In other embodiments, the haptic effect definitioncan be modified by: creating a new haptic effect definition; sending ahaptic instruction and the new haptic effect definition to theperipheral device; and causing a general haptic output device togenerate a haptic effect based on the new haptic effect definition atthe peripheral device in response to the haptic instruction. In someembodiments, the haptic effect definition can be modifiedprogrammatically. The flow then proceeds to 950.

At 950, the haptic effect definition is modified based on the receiveduser input data. In embodiments where the received user input data istrigger data, the haptic effect definition is modified based on thereceived trigger data. In certain embodiments, the haptic effectdefinition can be modified by modifying the haptic data of the hapticeffect definition. In some of these embodiments, the haptic effectdefinition can be modified by modifying one or more parameters of thehaptic data. Modifying the one or more parameters of the haptic data caninclude modifying at least one of: a magnitude parameter; a frequencyparameter; a directionality parameter; an attack parameter; a decayparameter; or a duration parameter. In other embodiments, the hapticeffect definition can be modified by: creating a new haptic effectdefinition; sending a haptic instruction and the new haptic effectdefinition to the peripheral device; and causing a general haptic outputdevice to generate a haptic effect based on the new haptic effectdefinition at the peripheral device in response to the hapticinstruction. In some embodiments, the haptic effect definition can bemodified programmatically. The flow then proceeds to 960.

At 960, a new haptic instruction and the modified haptic effectdefinition are sent to the peripheral device. In certain embodiments,the new haptic instruction can be a new trigger instruction. The flowthen proceeds to 970.

At 970, the new haptic instruction causes a haptic output device tomodify a haptic effect based on the modified haptic effect definition atthe user input element of the peripheral device. In certain embodiments,the haptic output device can modify the haptic effect by generating amodified haptic effect based on the modified haptic effect definition,where the modified haptic effect replaces an original haptic effect. Inother embodiments, the haptic output device can modify the haptic effectby generating a new haptic effect based on the modified haptic effectdefinition, where the new haptic effect can be generated concurrentlywith an original haptic effect. In certain embodiments, the hapticoutput device can be a targeted haptic output device, and the targetedhaptic output device can modify the haptic effect at the trigger of theperipheral device. In certain embodiments, the targeted haptic outputdevice can be a targeted actuator. In some of those embodiments, thetargeted actuator can be a targeted motor. The flow then ends.

Thus, in one embodiment, a system can modify a haptic effect that isexperienced at a peripheral device, such as a controller or gamepad. Thehaptic effect can be a trigger haptic effect that is experienced at atrigger of the peripheral device. The haptic effect can be modifiedbased on user input data that is received by the system, where the userinput data can include a position of a user input element and/or a forceapplied to the user input element. By modifying haptic feedbackexperienced at a peripheral device, and in particular, haptic feedbackexperienced at a trigger of the peripheral device, based on a user'sinteraction with the peripheral device, a more realistic and immersivegaming experience can be provided.

The features, structures, or characteristics of the invention describedthroughout this specification may be combined in any suitable manner inone or more embodiments. For example, the usage of “one embodiment,”“some embodiments,” “certain embodiment,” “certain embodiments,” orother similar language, throughout this specification refers to the factthat a particular feature, structure, or characteristic described inconnection with the embodiment may be included in at least oneembodiment of the present invention. Thus, appearances of the phrases“one embodiment,” “some embodiments,” “a certain embodiment,” “certainembodiments,” or other similar language, throughout this specificationdo not necessarily all refer to the same group of embodiments, and thedescribed features, structures, or characteristics may be combined inany suitable manner in one or more embodiments.

One having ordinary skill in the art will readily understand that theinvention as discussed above may be practiced with steps in a differentorder, and/or with elements in configurations which are different thanthose which are disclosed. Therefore, although the invention has beendescribed based upon these preferred embodiments, it would be apparentto those of skill in the art that certain modifications, variations, andalternative constructions would be apparent, while remaining within thespirit and scope of the invention. In order to determine the metes andbounds of the invention, therefore, reference should be made to theappended claims.

1. (canceled)
 2. A computer-implemented method for modifying a hapticeffect experienced at a user input element, the computer-implementedmethod comprising: receiving data from a peripheral device, the datacomprising at least a position of the user input element; modifying ahaptic effect definition based on the data to generate a modified hapticeffect definition; sending an instruction and the modified haptic effectdefinition to the peripheral device; and causing a haptic output deviceto modify a haptic effect based on the modified haptic effect definitionat the user input element of the peripheral device in response to theinstruction.
 3. The computer-implemented method of claim 2, wherein thehaptic effect definition comprises haptic data; and wherein themodifying the haptic effect definition comprises modifying the hapticdata of the haptic effect definition.
 4. The computer-implemented methodof claim 3, wherein the modifying the haptic data of the haptic effectdefinition comprises modifying at least one of a magnitude parameter, afrequency parameter, a directionality parameter, an attack parameter, adecay parameter, or a duration parameter.
 5. The computer-implementedmethod of claim 2, further comprising: receiving motion data; andmodifying the haptic effect definition based on the motion data.
 6. Thecomputer-implemented method of claim 5, wherein the motion datacomprises at least one of a motion of a user input element of theperipheral device from a first axis to a second axis, or a motion of theuser input element from a first direction to a second direction.
 7. Thecomputer-implemented method of claim 5, wherein the data furthercomprises one of a closure rate of the user input element or a forceapplied to the user input element.
 8. The computer-implemented method ofclaim 2, wherein the position is detected by a sensor coupled to theuser input element; and wherein the user input element is one of adigital button, analog button, bumper, directional pad, analog stick,digital stick, driving wheel, slider, or trigger.
 9. A system formodifying a haptic effect experienced at a user input element, thesystem comprising: a processor; and a memory storing one or moreprograms for execution by the processor, the one or more programsincluding instructions for: receiving data from a peripheral device, thedata comprising at least a position of the user input element; modifyinga haptic effect definition based on the data to generate a modifiedhaptic effect definition; sending an instruction and the modified hapticeffect definition to the peripheral device; and causing a haptic outputdevice to modify a haptic effect based on the modified haptic effectdefinition at the user input element of the peripheral device inresponse to the instruction.
 10. The system of claim 9, wherein thehaptic effect definition comprises haptic data; and wherein themodifying the haptic effect definition comprises modifying the hapticdata of the haptic effect definition.
 11. The system of claim 10,wherein the modifying the haptic data of the haptic effect definitioncomprises modifying at least one of a magnitude parameter, a frequencyparameter, a directionality parameter, an attack parameter, a decayparameter, or a duration parameter.
 12. The system of claim 9, furthercomprising instructions for: receiving motion data; and modifying thehaptic effect definition based on the motion data.
 13. The system ofclaim 12, wherein the motion data comprises at least one of: a motion ofa user input element of the peripheral device from a first axis to asecond axis; or a motion of the user input element from a firstdirection to a second direction.
 14. The system of claim 12, wherein thedata further comprises one of a closure rate of the user input elementor a force applied to the user input element.
 15. The system of claim 9,wherein the position is detected by a sensor coupled to the user inputelement; and wherein the user input element is one of a digital button,analog button, bumper, directional pad, analog stick, digital stick,driving wheel, slider, or trigger.
 16. A non-transitorycomputer-readable medium having instructions stored thereon that, whenexecuted by a processor, cause the processor to modify a haptic effectexperienced at a user input element, the instructions comprising:receiving data from a peripheral device, the data comprising at least aposition of the user input element; modifying a haptic effect definitionbased on the data to generate a modified haptic effect definition;sending an instruction and the modified haptic effect definition to theperipheral device; and causing a haptic output device to modify a hapticeffect based on the modified haptic effect definition at the user inputelement of the peripheral device in response to the instruction.
 17. Thenon-transitory computer-readable medium of claim 16, wherein themodifying the haptic data of the haptic effect definition comprisesmodifying at least one of a magnitude parameter, a frequency parameter,a directionality parameter, an attack parameter, a decay parameter, or aduration parameter.
 18. The non-transitory computer-readable medium ofclaim 16, further comprising instructions for: receiving motion data;and modifying the haptic effect definition based on the motion data. 19.The non-transitory computer-readable medium of claim 16, wherein themotion data comprises at least one of: a motion of a user input elementof the peripheral device from a first axis to a second axis; or a motionof the user input element from a first direction to a second direction.20. The non-transitory computer-readable medium of claim 16, wherein thedata further comprises one of a closure rate of the user input elementor a force applied to the user input element.
 21. The non-transitorycomputer-readable medium of claim 16, wherein the position is detectedby a sensor coupled to the user input element; and wherein the userinput element is one of a digital button, analog button, bumper,directional pad, analog stick, digital stick, driving wheel, slider, ortrigger.